package com.itany.corejava.code14_lambda;

/**
 * @author 石小俊
 * @date 2023年05月30日 14:47
 */
public class Test01_基本用法 {

    public static void main(String[] args) {

        // 匿名内部类用法
        SomeInterface someInterface = new SomeInterface() {
            @Override
            public String test(String s1, String s2) {
                return s1 + s2;
            }
        };

        // Lambda表达式用法
        // 当方法体只有一行代码,大括号可以省略
        // 当方法体只有一行代码,且是return语句,大括号与return关键字都可以省略
        SomeInterface someInterface2 = (s1, s2) -> s1 + s2;

        // 匿名内部类用法
        SomeInterface2 someInterface21 = new SomeInterface2() {
            @Override
            public void test(String s1) {
                System.out.println(s1);
            }
        };

        // Lambda表达式用法
        SomeInterface2 someInterface22 = s -> System.out.println(s);


        // 匿名内部类用法
        SomeInterface3 someInterface31 = new SomeInterface3() {
            @Override
            public void test() {
                System.out.println("Hello World");
            }
        };

        // Lambda表达式用法
        // 没有参数时,直接使用小括号()
        SomeInterface3 someInterface32 = () -> System.out.println("Hello World");
        ;
    }
}

interface SomeInterface {
    String test(String s1, String s2);
}

interface SomeInterface2 {
    void test(String s1);
}

interface SomeInterface3 {
    void test();
}
